/*
 *      Time_datastruct.h
 *      
 *      Copyright 2009 Daniele Ricci <denn86@gmail.com>, Luca Saccagi <luksak86@gmail.com>
 *      
 *      This program is free software; you can redistribute it and/or modify
 *      it under the terms of the GNU General Public License as published by
 *      the Free Software Foundation; either version 2 of the License, or
 *      (at your option) any later version.
 *      
 *      This program is distributed in the hope that it will be useful,
 *      but WITHOUT ANY WARRANTY; without even the implied warranty of
 *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *      GNU General Public License for more details.
 *      
 *      You should have received a copy of the GNU General Public License
 *      along with this program; if not, write to the Free Software
 *      Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
 *      MA 02110-1301, USA.
 */

#ifndef _TIMEDATA
#define _TIMEDATA

/**\struct dailyAlertList Time_datastruct.h
 * \brief Lista degli alert con data odierna
 * 
 * Questa struttura viene utilizzata per creare la lista di alert che riportano la data odierna
 */
typedef struct dailyAlertList {
	void *referred;///<Puntatore al nodo contenente l'alert che riporta questa data
	//~ unsigned char match[256];///<Array di tracciamento del matching sul singolo alert
	long int ts;///<Timestamp
	int yy;///<Anno
	unsigned char mm;///<Mese
	unsigned char dd;///<Giorno
	unsigned char hh;///<Ora
	unsigned char min;///<Minuto
	unsigned char sec;///<Secondo
	void *top;///<Puntatore alla testa della lista
	struct dailyAlertList *next;///<Puntatore alla lista di alert che riportano il timestamp corrente
	struct dailyAlertList *prev;///<Puntatore all'elemento precedente nella lista di timestamp
	} dailyAlertList;
/**\struct yList Time_datastruct.h
 * \brief Lista di anni con un alert nel giorno corrente
 * 
 * Lista di anni nei quali nel giorno corrente è presente un alert
 */
typedef struct yList {
	int yy;///<Anno
	struct yList *next;///<Puntatore al prossimo nodo della lista di anni
	dailyAlertList *top;///<Puntatore alla lista di alert
	} yList;

/**\struct iDay Time_datastruct.h
 * \brief Struttura di un giorno nell'indice
 * 
 * Struttura del singolo giorno all'inteno dell'indice
 */
typedef struct iDay {
	yList *top;///<Puntatore alla lista di anni nei quali nel giorno corrente è presente un alert
	} iDay;
	
iDay CreateTime[366];///<Indice dei \a create \a timestamp
iDay DetectTime[366];///<Indice dei \a detect \a timestamp
iDay AnalyzerTime[366];///<Indice degli \a analyzer \a timestamp

#endif
